package com.zenithmind.version.pojo.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

/**
 * 创建仓库DTO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "创建仓库DTO")
public class RepositoryCreateDTO {

    /**
     * 仓库名称
     */
    @NotBlank(message = "仓库名称不能为空")
    @Size(min = 1, max = 100, message = "仓库名称长度必须在1-100之间")
    @Schema(description = "仓库名称", example = "my-project")
    private String name;

    /**
     * 仓库描述
     */
    @Size(max = 500, message = "仓库描述长度不能超过500")
    @Schema(description = "仓库描述", example = "这是一个示例项目")
    private String description;

    /**
     * 仓库类型（1-公开，2-私有，3-内部）
     */
    @NotNull(message = "仓库类型不能为空")
    @Schema(description = "仓库类型（1-公开，2-私有，3-内部）", example = "1")
    private Integer type;

    /**
     * 默认分支
     */
    @Schema(description = "默认分支", example = "main")
    private String defaultBranch = "main";

    /**
     * 是否允许Fork（0-否，1-是）
     */
    @Schema(description = "是否允许Fork（0-否，1-是）", example = "1")
    private Integer allowFork = 1;

    /**
     * 是否允许Issues（0-否，1-是）
     */
    @Schema(description = "是否允许Issues（0-否，1-是）", example = "1")
    private Integer allowIssues = 1;

    /**
     * 是否允许Wiki（0-否，1-是）
     */
    @Schema(description = "是否允许Wiki（0-否，1-是）", example = "1")
    private Integer allowWiki = 1;

    /**
     * 仓库语言
     */
    @Schema(description = "仓库语言", example = "Java")
    private String language;

    /**
     * 仓库主页URL
     */
    @Schema(description = "仓库主页URL", example = "https://example.com")
    private String homepage;

    /**
     * 是否初始化README（0-否，1-是）
     */
    @Schema(description = "是否初始化README（0-否，1-是）", example = "1")
    private Integer initReadme = 1;

    /**
     * 是否添加.gitignore（0-否，1-是）
     */
    @Schema(description = "是否添加.gitignore（0-否，1-是）", example = "1")
    private Integer initGitignore = 1;

    /**
     * .gitignore模板
     */
    @Schema(description = ".gitignore模板", example = "Java")
    private String gitignoreTemplate;

    /**
     * 是否添加LICENSE（0-否，1-是）
     */
    @Schema(description = "是否添加LICENSE（0-否，1-是）", example = "0")
    private Integer initLicense = 0;

    /**
     * LICENSE模板
     */
    @Schema(description = "LICENSE模板", example = "MIT")
    private String licenseTemplate;
}
